const express = require('express');
const mysql = require('mysql');
const bodyParser = require('body-parser');
const cors = require('cors');

const app = express();

app.use(cors({
  origin: 'http://localhost:5000' // 允许来自指定源的请求
}));

const port = 3000;

// 使用body-parser中间件
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// 创建数据库连接
const connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'employment'
});

// 连接数据库
connection.connect(err => {
  if (err) {
    return console.error('错误: ' + err.message);
  }
  console.log('成功连接到MySQL数据库');
});
// 修改接口
app.put('/jobs/:id', (req, res) => {
  // 获取客户端发送的ID
  const id = req.params.id;
  // 获取客户端发送的信息
  const { company_name, job_title, salary, education, address, number_of_recruits } = req.body;
  const publish_time = new Date();

  // SQL更新语句
  const sql = 'UPDATE jobs SET company_name = ?, job_title = ?, salary = ?, education = ?,address=?, number_of_recruits=?,publish_time=? WHERE id = ?';

  // 执行更新操作
  connection.query(sql, [company_name, job_title, salary, education, address, number_of_recruits, publish_time, id], (err, results) => {
    if (err) {
      // 如果更新出错，返回错误信息
      res.status(500).json({ error: err.message });
      return;
    }
    // 检查是否有行被更新
    if (results.affectedRows === 0) {
      // 如果没有行被更新，可能是因为提供的ID不存在
      res.status(404).json({ error: '未找到指定ID的' });
      return;
    }
    // 如果更新成功，返回成功信息
    res.status(200).json({ message: '更新成功' });
  });
});
// // 获取接口
// app.get('/news/:id', (req, res) => {
//   // 获取客户端发送的ID
//   const newsId = req.params.id;

//   // 检查是否提供了ID
//   if (!newsId) {
//     // 如果没有提供ID，返回错误信息
//     res.status(400).json({ error: '缺少必要的ID' });
//     return;
//   }

//   // SQL查询语句
//   const sql = 'SELECT * FROM news WHERE news_id = ?';

//   // 执行查询操作
//   connection.query(sql, [newsId], (err, results) => {
//     if (err) {
//       // 如果查询出错，返回错误信息
//       res.status(500).json({ error: err.message });
//       return;
//     }
//     // 检查是否有结果返回
//     if (results.length === 0) {
//       // 如果没有结果，可能是因为提供的ID不存在
//       res.status(404).json({ error: '未找到指定ID的' });
//       return;
//     }
//     // 如果查询成功，返回数据
//     res.status(200).json(results[0]);
//   });
// });

// 删除接口
app.delete('/jobs/:id', (req, res) => {
  // 获取客户端发送的ID
  const id = req.params.id;
  // 检查是否提供了ID
  if (!id) {
    // 如果没有提供ID，返回错误信息
    res.status(400).json({ error: '缺少必要的ID' });
    return;
  }

  // SQL删除语句
  const sql = 'DELETE FROM jobs WHERE id = ?';

  // 执行删除操作
  connection.query(sql, [id], (err, results) => {
    if (err) {
      // 如果删除出错，返回错误信息
      res.status(500).json({ error: err.message });
      return;
    }
    // 检查是否有行被删除
    if (results.affectedRows === 0) {
      // 如果没有行被删除，可能是因为提供的ID不存在
      res.status(404).json({ error: '未找到指定ID的' });
      return;
    }
    // 如果删除成功，返回成功信息
    res.status(200).json({ message: '删除成功' });
  });
});

// 添加接口
app.post('/jobs', (req, res) => {
  // 获取客户端发送的信息
  const { company_name, job_title, salary, education, address, number_of_recruits } = req.body;
  const publish_time = new Date();

  // SQL插入语句
  const sql = 'INSERT INTO jobs (company_name, job_title, salary,education,address,number_of_recruits,publish_time) VALUES (?, ?, ?,?,?,?,?)';
  // 执行插入操作
  connection.query(sql, [company_name, job_title, salary, education, address, number_of_recruits, publish_time], (err, results) => {
    if (err) {
      // 如果插入出错，返回错误信息
      res.status(500).json({ error: err.message });
      return;
    }
    // 如果插入成功，返回成功信息
    res.status(201).json({ message: '添加成功', newId: results.insertId });
  });
})

// 列表获取
app.get('/jobs', (req, res) => {
  // SQL查询语句
  const sql = 'SELECT * FROM jobs';
  // 执行查询
  connection.query(sql, (err, results) => {
    if (err) {
      // 如果查询出错，返回错误信息
      res.status(500).json({ error: err.message });
      return;
    }
    // 如果查询成功，返回列表
    res.status(200).send({ message: '清单查询成功', results });
  });
});

// 列表获取
app.get('/resumes', (req, res) => {
  // SQL查询语句
  const sql = 'SELECT * FROM resume';
  // 执行查询
  connection.query(sql, (err, results) => {
    if (err) {
      // 如果查询出错，返回错误信息
      res.status(500).json({ error: err.message });
      return;
    }
    // 如果查询成功，返回列表
    res.status(200).send({ message: '清单查询成功', results });
  });
});
// 添加接口
app.post('/resumes', (req, res) => {
  // 获取客户端发送的信息
  const { name, gender, birth_date, nationality, place_of_origin, age, contact, email, political_status, current_residence, marital_status, graduation_school, profession, job_intention, graduation_time, highest_education, education_experience, work_experience, certificate_skills, self_evaluation, hobbies_and_talents, job_id } = req.body;

  // SQL插入语句
  const sql = 'INSERT INTO resume (name, gender, birth_date, nationality, place_of_origin, age, contact, email, political_status, current_residence, marital_status, graduation_school, profession, job_intention, graduation_time, highest_education, education_experience, work_experience, certificate_skills, self_evaluation, hobbies_and_talents, job_id) VALUES (?, ?, ?,?,?,?,?,?, ?, ?,?,?,?,?,?, ?, ?,?,?,?,?,?)';
  // 执行插入操作
  connection.query(sql, [name, gender, birth_date, nationality, place_of_origin, age, contact, email, political_status, current_residence, marital_status, graduation_school, profession, job_intention, graduation_time, highest_education, education_experience, work_experience, certificate_skills, self_evaluation, hobbies_and_talents, job_id], (err, results) => {
    if (err) {
      // 如果插入出错，返回错误信息
      res.status(500).json({ error: err.message });
      return;
    }
    // 如果插入成功，返回成功信息
    res.status(201).json({ message: '添加成功', newId: results.insertId });
  });
})

// 注册接口
app.post('/register', (req, res) => {
  const { useraccount, userpassword, userrole } = req.body;

  // 插入新用户到数据库
  const query = 'INSERT INTO user (user_account, user_password, user_role) VALUES (?, ?, ?)';
  connection.query(query, [useraccount, userpassword, userrole], (err, results) => {
    if (err) {
      return res.status(500).send({ message: err.message });
    }
    res.status(201).send({ result: true, message: '用户注册成功' });
  });
});

// 登录接口
app.post('/login', (req, res) => {
  const { useraccount, userpassword } = req.body;
  // 从数据库中查找用户
  const query = 'SELECT * FROM user WHERE user_account = ?';
  connection.query(query, [useraccount], (err, results) => {
    if (err) {
      return res.status(500).send({ message: err.message });
    }

    // 检查用户是否存在
    if (results.length === 0) {
      return res.status(401).send({ message: '用户不存在' });
    }

    // 验证密码
    const user = results[0];
    if (userpassword === user.user_password) {
      res.status(200).send({ message: '登录成功', user });
    } else {
      res.status(401).send({ message: '密码错误' });
    }
  });
});

// 启动服务器
app.listen(port, () => {
  console.log(`服务器正在监听端口 ${port}`);
});
